import request from "@/utils/request";

const DICT_BASE_URL = "/dict";

const DictAPI = {
  /** 字典分页列表 */
  getPage(queryParams: DictPageQuery) {
    return request<any, PageResult<DictPageVO[]>>({
      url: `${DICT_BASE_URL}`,
      method: "get",
      params: queryParams,
    });
  },
  /** 字典列表 */
  getList() {
    return request<any, PageResult<OptionType[]>>({ url: `${DICT_BASE_URL}`, method: "get" });
  },
  /** 字典表单数据 */
  getFormData(id: number) {
    return request<any, DictForm>({ url: `${DICT_BASE_URL}/${id}`, method: "get" });
  },
  /** 新增字典 */
  create(data: DictForm) {
    return request({ url: `${DICT_BASE_URL}`, method: "post", data });
  },
  /** 修改字典 */
  update(id: number, data: DictForm) {
    return request({ url: `${DICT_BASE_URL}/${id}`, method: "put", data });
  },
  /** 删除字典 */
  deleteByIds(ids: string) {
    return request({ url: `${DICT_BASE_URL}/${ids}`, method: "delete" });
  },

  /** 获取字典项分页列表 */
  getDictItemPage(dictCode: string, queryParams: DictItemPageQuery) {
    return request<any, PageResult<DictItemPageVO[]>>({
      url: `${DICT_BASE_URL}/${dictCode}/items/page`,
      method: "get",
      params: queryParams,
    });
  },
  /** 获取字典项列表 */
  getDictItems(dictCode: string) {
    return request<any, DictItemOption[]>({
      url: `${DICT_BASE_URL}/option/${dictCode}`,
      method: "get",
    });
  },
  /** 新增字典项 */
  createDictItem(dictCode: string, data: DictItemForm) {
    return request({ url: `${DICT_BASE_URL}`, method: "post", data });
  },
  /** 获取字典项表单数据 */
  getDictItemFormData(dictCode: string, id?: number) {
    return request<any, DictItemForm>({
      url: `${DICT_BASE_URL}/${dictCode}/${id}`,
      method: "get",
    });
  },
  /** 修改字典项 */
  updateDictItem(dictCode: string, id: number, data: DictItemForm) {
    return request({ url: `${DICT_BASE_URL}/${id}`, method: "put", data });
  },
  /** 删除字典项 */
  deleteDictItems(dictCode: string, ids: string) {
    return request({ url: `${DICT_BASE_URL}/${ids}`, method: "delete" });
  },
};

export default DictAPI;

export interface DictPageQuery extends PageQuery {
  /** 搜索关键字 */
  keywords?: string;
  /** 状态(1:启用;0:禁用) */
  status?: number;
}

export interface DictPageVO {
  /** 字典ID */
  /** 字典ID(新增不填) */
  id?: number;
  /** 字典名称 */
  name?: string;
  /** 字典编码 */
  dictKey?: string;
  /** 状态(1:启用;0:禁用) */
  /** 字典值 **/
  dictValue: string;
  /** 字典类型 */
  type: string;
  /** 状态(1:启用;0:禁用) */
  status?: number;
  /** 备注 */
  comment?: string;
}

export interface DictForm {
  /** 字典ID(新增不填) */
  id?: number;
  /** 字典名称 */
  name?: string;
  /** 字典编码 */
  dictKey?: string;
  /** 状态(1:启用;0:禁用) */
  /** 字典值 **/
  dictValue: string;
  /** 字典类型 */
  type: string;
  /** 状态(1:启用;0:禁用) */
  status?: number;
  /** 备注 */
  comment?: string;
}

export interface DictItemPageQuery extends PageQuery {
  /** 搜索关键字 */
  keywords?: string;
  /** 字典编码 */
  dictCode?: string;
}

export interface DictItemPageVO {
  /** 字典项ID */
  /** 字典ID(新增不填) */
  id?: number;
  /** 字典名称 */
  name?: string;
  /** 字典编码 */
  dictKey?: string;
  /** 状态(1:启用;0:禁用) */
  /** 字典值 **/
  dictValue: string;
  /** 字典类型 */
  type: string;
  /** 状态(1:启用;0:禁用) */
  status?: number;
  /** 备注 */
  comment?: string;
}

export interface DictItemForm {
  /** 字典项ID(新增不填) */
  /** 字典ID(新增不填) */
  id?: number;
  /** 字典名称 */
  name?: string;
  /** 字典编码 */
  dictKey?: string;
  /** 状态(1:启用;0:禁用) */
  /** 字典值 **/
  dictValue: string;
  /** 字典类型 */
  type: string;
  /** 状态(1:启用;0:禁用) */
  status?: number;
  /** 备注 */
  comment?: string;
}

export interface DictItemOption {
  /** 值 */
  dictKey: string;
  /** 标签 */
  dictValue: string;
  /** 标签类型 */
  type?: "";

  [key: string]: any;
}
